package multithreading;

/** 实现Runnable接口的类并不是一个线程类，是一个可运行的类，它还不是一个线程 */
public class RunnableImpl implements Runnable {
    boolean isRun = true;
    @Override
    public void run() {
        System.out.println("实现Runnable接口来创建线程");
        for (int i = 0; i < 10; i++){
            if(isRun){
                System.out.println(Thread.currentThread().getName() + "--->" + i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }else{
                // return就结束了，可在此处保存数据
                //save....

                return; //终止当前线程
            }
        }
    }
    public static void main(String[] args) {
        RunnableImpl ri = new RunnableImpl();
        Thread thread = new Thread(ri);
        thread.start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("采用匿名内部类方式创建线程");
            }
        }).start();
        new Thread(() -> System.out.println("采用lambda表达式创建线程")).start();

        // 模拟5秒
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 终止线程thread的执行，就把标记修改为false，就结束了
        ri.isRun = false;
    }
}